export const crudOptions = (vm) => {
  return {
    rowHandle: {
      dropdown: { // 操作列折叠
        atLeast: 0, // 至少几个以上的按钮才会被折叠,注意show=false的按钮也会计算在内（行编辑按钮默认是隐藏的也会占一个位置）
        text: '操作', // dropdown按钮文字
        type: 'primary',
        icon: 'el-icon-more'
      },
      width: 150,
      custom: [
        {
          thin: true,
          text: '测试',
          size: 'small',
          icon: 'el-icon-video-play',
          show () {
            // return vm.hasPermissions('ResetPassword')
            return true
          },
          emit: 'apiTestRequest'
        },
        {
          thin: true,
          text: '查看结果',
          size: 'small',
          icon: 'el-icon-files',
          show () {
            // return vm.hasPermissions('ResetPassword')
            return true
          },
          emit: 'showApiResult'
        }
      ],
      view: {
        thin: true,
        text: '查看',
        disabled () {
          return false
          // return !vm.hasPermissions(':api_testapiinfo:edit')
        }
      },
      edit: {
        thin: true,
        text: '编辑',
        disabled () {
          return false
          // return !vm.hasPermissions(':api_testapiinfo:edit')
        }
      },
      remove: {
        thin: true,
        text: '删除',
        disabled () {
          return false
          // return !vm.hasPermissions(':api_testapiinfo:del')
        }
      },
      fixed: 'right'
    },
    options: {
      tableType: 'vxe-table',
      rowKey: true, // 必须设置，true or false
      rowId: 'id',
      height: '100%', // 表格高度100%, 使用toolbar必须设置
      highlightCurrentRow: false
    },
    formOptions: { // 表单宽度
      type: 'drawer',
      draggable: false, // 关闭拖拽
      fullscreen: false, // 关闭全屏功能
      size: '70%' // 宽度50%
      // defaultSpan: 96 // 默认的表单 span
    },
    indexRow: { // 序号
      title: '序号',
      align: 'center',
      width: 60
    },
    selectionRow: { // 多选框
      align: 'center',
      width: 46
    },
    columns: [
      {
        title: 'Id',
        key: 'id',
        form: { // 表单配置
          disabled: true // 禁用表单编辑
        },
        // type: 'select',
        // dict: { url: ''}, //数据字典
        // search: { disabled: false }, // 开启查询
        disabled: true, // 隐藏列
        sortable: true
      },
      {
        title: '接口名称',
        key: 'name',
        // width: '100%',
        // type: 'select',
        // dict: { url: ''}, //数据字典
        // search: { disabled: false }, // 开启查询
        // disabled: true, // 隐藏列
        form: { // 表单配置
          disabled: false, // 禁用表单编辑
          rules: [{ required: true, message: '接口名称不能为空' }],
          component: {
            span: 24,
            props: {
              clearable: true
            },
            placeholder: '请输入接口名称'
          },
          itemProps: {
            class: { yxtInput: true }
          }
        }
      },
      {
        title: '请求方法',
        key: 'method',
        type: 'select',
        dict: {
          data: [
            { value: 0, label: 'GET' },
            { value: 1, label: 'POST' },
            { value: 2, label: 'PUT' },
            { value: 3, label: 'DELETED' }
          ]
        },
        // search: { disabled: false }, // 开启查询
        // disabled: true, // 隐藏列
        form: { // 表单配置
          value: 1,
          disabled: false, // 禁用表单编辑
          rules: [{ required: true, message: 'Method' }],
          component: {
            span: 6,
            props: {
              clearable: true
            },
            placeholder: '协议'
          },
          itemProps: {
            class: { yxtInput: true }
          },
          valueChange (key, value, form, { getColumn, mode, component, immediate, getComponent }) {
            if (value && (value === '0' || value === '2')) {
              form.content_type = undefined
              form.body = undefined
              form.params_type.show = false
              form.body.show = false
            }
          }
        }
      },
      {
        // title: 'URL',
        key: 'url',
        // type: 'select',
        // dict: { url: ''}, //数据字典
        // search: { disabled: false }, // 开启查询
        disabled: true, // 隐藏列
        form: { // 表单配置
          disabled: false, // 禁用表单编辑
          rules: [{ required: true, message: '请求url不能为空' }],
          component: {
            span: 18,
            props: {
              clearable: true
            },
            placeholder: '请输入请求URL'
          },
          itemProps: {
            labelWidth: '0px'
          }
        }
      },
      {
        title: '所属项目',
        key: 'project_belong',
        type: 'select',
        showOverflowTooltip: true,
        dict: {
          cache: false,
          url: '/api/project/',
          value: 'id', // 数据字典中value字段的属性名
          label: 'project_name' // 数据字典中label字段的属性名
        },
        search: { disabled: false }, // 开启查询
        // component: {
        //   name: 'foreignKey',
        //   valueBinding: 'project_name'
        // },
        // disabled: true, // 隐藏列
        form: { // 表单配置
          disabled: false, // 禁用表单编辑
          rules: [{ required: true, message: '所属项目不能为空' }],
          component: {
            span: 12,
            props: {
              clearable: true
            },
            placeholder: '请输入所属项目'
          },
          itemProps: {
            class: { yxtInput: true }
          },
          valueChange (key, value, form, { getColumn, mode, component, immediate, getComponent }) {
            form.module_belong = undefined // 将“module_belong”的值置空
            if (value) {
              getComponent('module_belong').reloadDict() // 执行city的select组件的reloadDict()方法，触发“city”重新加载字典
            }
          }
        }
      },
      {
        title: '所属模块',
        key: 'module_belong',
        type: 'select',
        width: 100,
        dict: {
          cache: false,
          // url() 改成构建url，返回一个url
          url (dict, { form /* 当前的form表单 */, component /* 当前的组件ref */ }) {
            if (form && form.project_belong != null) { // 本数据字典的url是通过前一个select的选项决定的
              return '/api/module/?project_belong=' + form.project_belong
            } else {
              return '/api/module/'
            }
          },
          immediate: true,
          value: 'id', // 数据字典中value字段的属性名
          label: 'module_name' // 数据字典中label字段的属性名
        },
        search: { disabled: false }, // 开启查询
        // disabled: true, // 隐藏列
        form: { // 表单配置
          disabled: false, // 禁用表单编辑
          rules: [{ required: true, message: '所属模块' }],
          component: {
            span: 12,
            props: {
              clearable: true
            },
            placeholder: '请选择模块名称'
          },
          itemProps: {
            class: { yxtInput: true }
          }
        }
      },

      // {
      //   title: '参数设置',
      //   key: 'type',
      //   sortable: true,
      //   disabled: true,
      //   form: { // 嵌套表格字段
      //     // rules: [{ required: true, message: '请选择用户' }],
      //     // slot: true, // 通过form slot 引入子表格，将子表格当做一个字段组件来用
      //     component: {
      //       span: 24
      //     }
      //   }
      // },

      {
        title: '参数设置',
        key: 'params_type',
        sortable: true,
        type: 'radio',
        disabled: true, // 隐藏列
        dict: {
          data: vm.dictionary('params_type')
        },
        form: { // 表单配置
          value: 0,
          component: {
            span: 18,
            show (context) {
              return context.form.method === 1 || context.form.method === 2
            }
          }
        }
      },
      {
        title: '头部信息',
        key: 'headers',
        // dict: { url: ''}, //数据字典
        // search: { disabled: false }, // 开启查询
        showOverflowTooltip: true,
        disabled: true, // 隐藏列
        form: { // 表单配置
          slot: true,
          disabled: false, // 禁用表单编辑
          component: {
            show (context) {
              return (context.form.method === 1 || context.form.method === 2) && context.form.params_type === 0
            },
            span: 24,
            props: {
              clearable: true
            },
            placeholder: '请输入请求URL'
          }
        }
      },
      {
        title: '普通参数',
        key: 'params',
        type: 'text-area',
        // dict: { url: ''}, //数据字典
        // search: { disabled: false }, // 开启查询
        showOverflowTooltip: true,
        disabled: true, // 隐藏列
        form: { // 表单配置
          disabled: false, // 禁用表单编辑
          // rules: [{ required: true, message: '请求body参数不能为空' }],
          component: {
            show (context) {
              return (context.form.method === 1 || context.form.method === 2) && context.form.params_type === 1
            },
            span: 18,
            props: {
              clearable: true
            },
            placeholder: '请输入请求URL'
          }
        }
      },
      {
        title: 'json数据',
        key: 'jsonbody',
        // dict: { url: ''}, //数据字典
        // search: { disabled: false }, // 开启查询
        showOverflowTooltip: true,
        disabled: true, // 隐藏列
        form: { // 表单配置
          slot: true,
          disabled: false, // 禁用表单编辑
          // rules: [{ required: true, message: '请求body参数不能为空' }],
          component: {
            show (context) {
              return (context.form.method === 1 || context.form.method === 2) && context.form.params_type === 2
            },
            span: 24,
            props: {
              clearable: true
            },
            placeholder: '请输入请求URL'
          }
        }
      },
      {
        title: '检查点',
        key: 'verification',
        // dict: { url: ''}, //数据字典
        // search: { disabled: false }, // 开启查询
        showOverflowTooltip: true,
        disabled: true, // 隐藏列
        form: { // 表单配置
          disabled: false, // 禁用表单编辑
          // rules: [{ required: true, message: '请求body参数不能为空' }],
          component: {
            // show (context) {
            //   return (context.form.method === 1 || context.form.method === 2) && context.form.params_type === 1
            // },
            span: 16,
            props: {
              clearable: true
            },
            placeholder: '请输入请求检查点'
          }
        }
      },
      {
        title: '数据提取',
        key: 'extract',
        // dict: { url: ''}, //数据字典
        // search: { disabled: false }, // 开启查询
        showOverflowTooltip: true,
        disabled: true, // 隐藏列
        form: { // 表单配置
          disabled: false, // 禁用表单编辑
          // rules: [{ required: true, message: '请求body参数不能为空' }],
          component: {
            // show (context) {
            //   return (context.form.method === 1 || context.form.method === 2) && context.form.params_type === 1
            // },
            span: 16,
            props: {
              clearable: true
            },
            placeholder: '请输入请求检查点'
          }
        }
      }
    ].concat(vm.commonEndColumns())
  }
}
